﻿using System;
using System.Collections.Generic;
using System.Text;
using PublicTransport.Views;
using PublicTransport.Services.Enums;

namespace PublicTransport.Views
{
    interface ISearchView
    {

        /// <summary> Event vyvolaný ak používateľ požiada o vyhľadanie spojenia </summary>
        event EventHandler SearchInitiated;
       
        /// <summary> Event vyvolaný ak používateľ požiada o vyhľadanie najbližších zastávok </summary>
        event EventHandler ShowNearestStations;

        /// <summary>   Zistí, alebo nastaví štartovnú zastávku v UI </summary>
        ///
        /// <value> Štartovná zastávka </value>
        String StartStation { get; set; }

        /// <summary>    Zistí, alebo nastaví cieľovú zastávku v UI </summary>
        ///
        /// <value> Cieľová zastávka </value>
        String DestinationStation { get; set; }

        /// <summary>   Nastaví zoznam staníc, ktoré UI bude radiť. </summary>
        ///
        /// <param name="hints">    Zoznam všetkých staníc </param>
        void SetStationHint(String[] hints);

        /// <summary>   Zobrazí oznam, ktorý informuje o prebiehaní načítavania </summary>
        void StartProgressBar();

        /// <summary>   Zobrazí oznam, ktorý informuje o prebiehaní hľadania cesty </summary>
        void StartProgressBarSearch();

        /// <summary>   Zastaví oznam o prebiehaní hľadania cesty </summary>
        void StopProgressBarSearch();

        /// <summary>   Skryje oznam o načítavaní </summary>
        void StopProgressBar();

        /// <summary>  Nastaví alebo zistí počet minút v čase, v ktorom sa bude hľadať </summary>
        ///
        /// <value> Počet minút - 14:53 znamená 53 minút </value>
        int Minutes { get; set; }

        /// <summary>   Gets or sets the hours. </summary>
        ///
        /// <value> The hours. </value>
        int Hours { get; set; }

        /// <summary>   Zobrazí používateľovi chybovú hlášku </summary>
        ///
        /// <param name="message"> Chybová hláška </param>
        /// <param name="popup">   Zobraziť dole, alebo vyskočí okno? </param>
        void DisplayError(String message, bool popup);

        /// <summary>   Zistí, alebo nastaví typ ďna v UI </summary>
        ///
        /// <value> Typ dňa</value>
        DayTypeEnum? DayType { get; set; }

        /// <summary>   Nastaví alebo zistí hodnotu, či je povolené tlačidlo na vyhľadávanie </summary>
        ///
        /// <value> true ak je tlačidlo povolené </value>

        bool SearchButtonEnabled { get; set; }
    }
}
